//小型计算器的代码：回调函数

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//回调函数:
//是一个通过函数指针调用的函数，如果把函数的地址（指针）作为参数传给另一个函数，当这个函数被用来调用其所指向的函数时
//我们就说这是回调函数。回调函数是不由该函数的实现方直接调用，而是在特定的事件或条件下由另一方调用的，用于对该事件或条件就行响应。
Cacl(void(*pf)(int, int))
{
	int x, y;
	printf("请输入两个操作数\n");
	scanf("%d %d", &x, &y);
	pf(x, y);
}
void add(int x, int y)
{
	printf("%d", x + y);
}

void sub(int x, int y)
{
	printf("%d", x - y);
}

void mul(int x, int y)
{
	printf("%d", x * y);
}

void div(int x, int y)
{
    printf("%d", x / y);
}
int main()
{
	printf("1.add 2.sub 3.mul 4.div\n");
	int input = 1;
	printf("请输入数字\n");
	do
    	{
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			Cacl(add);
			break;
		case 2:
			Cacl(sub);
			break;
		case 3:
			Cacl(mul);
			break;
		case 4:
			Cacl(div);
			break;
		case 0:
			printf("结束程序\n");
			break;
		default:
			printf("输入错误\n");
			break;
		}
	} while (input);    //do while语句：while后要加分号
	
    	return 0;
}

